package org.jeecg.modules.power.device.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.app.v1.device.entity.ApiBindDeviceEntity;
import org.jeecg.modules.app.v1.device.entity.ApiFaultDeviceEntity;
import org.jeecg.modules.app.v1.device.entity.ApiStockDeviceRecordEntity;
import org.jeecg.modules.app.v1.device.entity.ApiUnbindDeviceEntity;
import org.jeecg.modules.power.device.entity.YlDeviceRecords;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.power.device.entity.YlEmptyShopRecords;

/**
 * @Description: 设备变动记录表
 * @Author: jeecg-boot
 * @Date:   2024-07-17
 * @Version: V1.0
 */
public interface YlDeviceRecordsMapper extends BaseMapper<YlDeviceRecords> {


    /**=============================================后台使用方法==starrt===============================================================================*/
    //region 后台相关的方法

    /**
     * 新增无设备门店
     * @param shopId
     * @param unbindTime 过期时间 解绑时间+7天 时分秒
     * @param expireDate 过期时间 解绑时间+7天
     */
    void saveEmptyShopRecords(String shopId,String unbindTime,String expireDate);

    /**
     * 删除无设备门店记录
     * 门店7天内绑定设备，删除记录
     * @param shopId
     */
    void deleteEmptyShop(String shopId);
    /**
     * 无绑定设备门店（包含解绑设备门店和从公海认领门店）
     * 用于每天刷新处理超7天未绑定设备自动进入公海业务
     * @return
     */
    List<YlEmptyShopRecords>emptyShopList();

    //endregion
    /**=============================================后台使用方法==starrt===============================================================================*/

    /**
     * 设备解绑申请单
     * @param page
     * @param transferStatus
     * @param transferNumber
     * @return
     */
   IPage<ApiUnbindDeviceEntity> unbindDeviceList(Page<ApiUnbindDeviceEntity> page, String transferStatus, String transferNumber,String receiveId,String transferType);

    /**
     * 机柜解绑绑定记录
     * @param page
     * @param deviceId
     * @return
     */
   IPage<ApiBindDeviceEntity> bindDeviceList(Page<ApiBindDeviceEntity> page, String deviceId);

    /**
     * 门店下设备解绑绑定记录
     * @param page
     * @param shopId
     * @param beginTime
     * @param endTime
     * @return
     */
   IPage<ApiBindDeviceEntity> shopBindDevice(Page<ApiBindDeviceEntity> page, String shopId, String beginTime, String endTime);

    /**
     * 设备退库申请列表
     * @param page
     * @param transferNumber
     * @param beginTime
     * @param endTime
     * @param deviceCategory
     * @param transferType
     * @return
     */
   IPage<ApiStockDeviceRecordEntity> stockDeviceRecords(Page<ApiStockDeviceRecordEntity> page,
                                                        String transferId,
                                                        String transferNumber,
                                                        String beginTime,
                                                        String endTime,
                                                        String deviceCategory, String transferType);

    /**
     * bd间资产转移列表
     * @param page
     * @param transferId
     * @param receiveId
     * @param transferNumber
     * @return
     */
   IPage<ApiBindDeviceEntity> bdDeviceList(Page<ApiBindDeviceEntity> page, String transferId, String receiveId,String transferNumber);
    /**
     * 门店设备绑定解绑记录
     * @param page
     * @param shopId
     * @return
     */
   IPage<YlDeviceRecords> shopDeviceList(Page<YlDeviceRecords> page, String shopId);
    /**
     * 资产一览-故障设备列表
     * @param page
     * @param categoryId
     * @param mac
     * @param groupId 权限数据查询
     * @param flag {@link org.jeecg.modules.app.v1.util.Const.leader_1}
     * @param sourceType {@link org.jeecg.modules.app.v1.util.Const.sourceType_1}
     * @return
     */
   IPage<ApiFaultDeviceEntity> faultDeviceList(Page<ApiFaultDeviceEntity> page, String mac,String categoryId,String flag,String groupId,String sourceType,String status);

    /**
     * 统计门店下的设备数
     * @param shopId
     * @return
     */
    Integer countShopDevice(String shopId);
    /**撤机门店数
     * 撤机门店数-获取 当月绑定的设备数据
     * @return
     */
    List<YlDeviceRecords> bindingDeviceShop();//获取 当月绑定的设备


}
